/*
 * Copyright (C) 2012 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package com.android.talkback;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.webkit.WebResourceRequest;
import android.webkit.WebResourceResponse;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class WebActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent = getIntent();
        if (intent == null) {
            finish();
            return;
        }

        Uri uri = intent.getData();
        if (uri == null) {
            finish();
            return;
        }

        setContentView(R.layout.web_activity);

        WebView webView = (WebView) findViewById(R.id.web);
        webView.setWebViewClient(new WhitelistWebViewClient());
        webView.loadUrl(uri.toString());
    }

    private class WhitelistWebViewClient extends WebViewClient {
        @Override
        public WebResourceResponse shouldInterceptRequest(WebView view,
                                                          WebResourceRequest request) {
            final String host = request.getUrl().getHost();
            // Allow URLs from Google for the TOS and Privacy Policy.
            if (host.matches("[a-z]*.google.com") ||
                    host.matches("[a-z]*.google.[a-z][a-z]") ||
                    host.matches("[a-z]*.google.co.[a-z][a-z]") ||
                    host.matches("[a-z]*.google.com.[a-z][a-z]") ||
                    host.matches("[a-z]*.gstatic.com") ||
                    host.equals("fonts.googleapis.com")) {
                return super.shouldInterceptRequest(view, request);
            }
            return new WebResourceResponse("", "", 403, "Denied", null, null);
        }
    }
}
